package com.example.myjavafx.controller;


import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;

import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.StackPane;
import java.util.HashMap;
import java.util.Map;

import java.io.IOException;

/**
 * @author admin
 */
public class MainController {

    /**
     *  内容面板，用于显示当前页面
     */
    @FXML
    private BorderPane contentPane;

    /**
     * 内容区域，用于加载不同的页面
     */
    @FXML
    private StackPane contentArea;
    /**
     * 标题标签，显示当前页面的标题
     */
    @FXML
    private Label titleLabel;
    /**
     * 当前页面的标题
     */
    private String currentTitle = "";
    /**
     * 已加载的页面节点缓存，用于快速切换已显示的页面
     */

    private Map<String, Node> contentCache = new HashMap<>();

//    private void loadContent(String fxmlFile, String title) {
//        try {
//            if (!contentCache.containsKey(title)) {
//                // 如果当前页面未被缓存，则从fxml文件创建新的Node并加入到缓存中
//                FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/" + fxmlFile));
//                Node node = loader.load();
//                contentCache.put(title, node);
//            }
//            currentTitle = title;
//            titleLabel.setText(title);
//            contentPane.setCenter(contentCache.get(title));
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//    }

    @FXML
    private void initialize() {
        /**
         * 初始化时，将contentArea设置为contentPane的中心节点，并设置标题标签的鼠标点击事件，用于切换已显示的页面
         */
        contentPane.setCenter(contentArea);

        titleLabel.setOnMouseClicked(event -> {
            if (contentCache.containsKey(currentTitle)) {
                Node cachedNode = contentCache.get(currentTitle);
                contentPane.setCenter(cachedNode);
            }
        });

        showHome(); // 默认显示首页
    }

    @FXML
    private void showHome() {
        loadContent("home.fxml", "首页");
    }

    @FXML
    private void showProducts() {
        loadContent("products.fxml", "产品管理");
    }

    @FXML
    private void showOrders() {
        loadContent("orders.fxml", "订单管理");
    }

    @FXML
    private void showSettings() {
        loadContent("settings.fxml", "系统设置");
    }

    @FXML
    private void showVideo() {
        loadContent("video.fxml", "视频播放");
    }

    @FXML
    private void showCharts() {
        loadContent("charts.fxml", "图表展示");
    }

    @FXML
    private void showGraphics() {
        loadContent("graphics.fxml", "2D/3D功能");
    }

    @FXML
    private void showAudio() {
        loadContent("audio.fxml", "音频操作");
    }
    @FXML
    public void showImage() {
        loadContent("image-view.fxml", "图片处理");
    }
    public void showCrop() {
        loadContent("crop-view.fxml", "图片裁剪");
    }

    private void loadContent(String fxmlFile, String title) {
        try {
            Node cachedNode = contentCache.get(title);
            if (cachedNode == null) {
                FXMLLoader loader = new FXMLLoader(getClass().getResource("/com/example/myjavafx/" + fxmlFile));
                cachedNode = loader.load();
                contentCache.put(title, cachedNode);
            }

            contentPane.setCenter(cachedNode);
            titleLabel.setText(title);
            currentTitle = title;
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
